home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / Screen.asm < prev    next >
Assembly Source File  |  1994-01-09  |  6KB  |  212 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_OpenScreen und TRK_CloseScreen
  4. ; benutzt TRK_OpenStdLibrary, TRK_Open
  5.  
  6.         NOLIST
  7.         INCLUDE "exec/LVO.i"
  8.         INCLUDE "exec/memory.i"
  9.         INCLUDE "dos/LVO.i"
  10.         INCLUDE "dos/dosextens.i"
  11.         INCLUDE "intuition/screens.i"
  12.         INCLUDE "tracker.i"
  13.         LIST
  14.  
  15. _TrackerBase:   EQUR a5
  16. _DosBase:       EQUR a4
  17. _IntuitionBase: EQUR a3
  18. Output:         EQUR d7
  19.  
  20. ; WB-Message ?
  21.         sub.l   a1,a1           ;a1=0->eigener Task
  22.         CALLEXEC FindTask       ;Wo darf man denn nachschauen ?
  23.         move.l  d0,a0
  24.         tst.l   pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  25.         bne     fromCLI
  26. ;von WB aus:
  27.         lea     pr_MsgPort(a0),a0
  28.         move.l  a0,-(sp)
  29.         CALL    WaitPort        ;auf Start-Message warten
  30.         move.l  (sp)+,a0
  31.         CALL    GetMsg          ;muß nachher beantwortet werden
  32.         move.l  d0,WBenchMsg
  33.  
  34. fromCLI:
  35. ; Tracker-Library öffnen
  36.         OPENLIB TrName
  37.         tst.l   d0
  38.         beq     ende_all
  39.         move.l  d0,_TrackerBase
  40.         TRK_OPENSTDLIB DOS,36
  41.         tst.l   d0
  42.         beq     ende_trk
  43.         move.l  d0,_DosBase
  44.         TRK_OPENSTDLIB INTUITION,34
  45.         tst.l   d0
  46.         beq     ende_trk
  47.         move.l  d0,_IntuitionBase
  48.  
  49.         tst.l   WBenchMsg
  50.         bne     fromWB
  51. ;von CLI aus -> Ausgaben ins CLI-Fenster
  52.         CALLDOS Output
  53.         move.l  d0,Output
  54.         bra     main
  55. ;von WB aus gestartet -> eigenes Window nötig
  56. fromWB: move.l  #WdName,d1
  57.         move.l  #MODE_OLDFILE,d2
  58.         CALLTRK TRK_Open
  59.         move.l  d0,Output
  60. ;---------------------------------------------------------------------------
  61. ;Haupt-Testteil
  62.  
  63. OPENS:  MACRO   ;Adresse der NewScreen-Struktur, sichern in
  64.         lea     \1,a0
  65.         bsr     OpenScreen
  66.         IFNC    '\2',''
  67.         move.l  d0,\2
  68.         ENDC
  69.         ENDM
  70.  
  71. OPENST: MACRO   ;Adresse der NewScreen-Struktur, Start TagList, sichern in
  72.         lea     \1,a0
  73.         lea     \2,a1
  74.         bsr     OpenScreenTags
  75.         IFNC    '\3',''
  76.         move.l  d0,\3
  77.         ENDC
  78.         ENDM
  79.  
  80. CLOSES: MACRO   ;wo gesichert
  81.         move.l  \1,a0
  82.         bsr     CloseScreen
  83.         ENDM
  84.  
  85. main:   OPENS   ns1,d6
  86.         OPENST  ns5,t5,d5
  87.         OPENS   ns2
  88.         OPENS   ns3,d4
  89.         OPENST  0,t6,d3
  90.         CLOSES  d5
  91.         OPENST  0,t7
  92.         CLOSES  d4
  93.         OPENS   ns4,d5
  94.         CLOSES  d3
  95.         move.l  #500,d1
  96.         CALL    Delay
  97.  
  98. ;---------------------------------------------------------------------------
  99.  
  100. ;ggf. Abschieds-Message
  101.         tst.l   WBenchMsg
  102.         beq     ende_trk
  103.         move.l  Output,d1
  104.         move.l  #GoodBye,d2
  105.         move.l  #GoodByeLen,d3  ;jetzt sind die Speicher-Pointer uninteressant
  106.         CALLDOS Write
  107.         move.l  #150,d1
  108.         CALL    Delay
  109. ;Library schließen
  110. ende_trk:
  111.         CLOSELIB _TrackerBase
  112. ende_all:
  113.         tst.l   WBenchMsg       ;war da was ?
  114.         beq     toCLI           ;na dann halt nicht
  115. ;Message zur WB zurück
  116.         move.l  WBenchMsg,a1
  117.         CALLEXEC ReplyMsg
  118. toCLI:  moveq   #0,d0
  119.         rts
  120. ;---------------------------------------------------------------------------
  121. ;Unterroutine: TRK_OpenScreenTagList testen
  122. ;Parameter: a0 = Adresse einer NewScreen-Struktur
  123. ;           a1 = Adresse des 1. Tags
  124. ;Ergebnis: Adresse des geöffneten Screens / 0 bei Fehler
  125.  
  126. OpenScreenTags:
  127.         movem.l d2/d3,-(sp)             ;d2/d3 sichern
  128.         CALLTRK TRK_OpenScreenTagList
  129.         move.l  #OpenTagsText,d2
  130.         bra     PostOpenScreen
  131. ;---------------------------------------------------------------------------
  132. ;Unterroutine: TRK_OpenScreen testen
  133. ;Parameter: a0 = Adresse einer NewScreen-Struktur
  134. ;Ergebnis: Adresse des geöffneten Screens / 0 bei Fehler
  135.  
  136. OpenScreen:
  137.         movem.l d2/d3,-(sp)     ;d2/d3 sichern
  138.         CALLTRK TRK_OpenScreen
  139.         move.l  #OpenText,d2
  140. PostOpenScreen:
  141.         move.l  d0,-(sp)        ;d0=2. Ausgabeparameter
  142.         move.l  #sc_Title,a0
  143.         move.l  0(a0,d0.l),-(sp) ;Adresse des Screen-Titles==1. Parameter
  144.         move.l  Output,d1
  145.         move.l  sp,d3
  146.         CALLDOS VFPrintf
  147.         addq.l  #4,sp           ;1. Parameter löschen
  148.         move.l  #100,d1
  149.         CALL    Delay
  150.         movem.l (sp)+,d0/d2/d3  ;Ergebnis und d2/d3 holen
  151.         rts
  152. ;---------------------------------------------------------------------------
  153. ;Unterroutine: TRK_CloseScreen testen
  154. ;Parameter: a0 = Adresse des Screens
  155. ;Ergebnis: -
  156.  
  157. CloseScreen:
  158.         move.l  a0,d0
  159.         bne     1$
  160.         rts
  161. 1$:     movem.l d2/d3/a0,-(sp)  ;Register sichern
  162.         CALLTRK TRK_CloseScreen
  163.         move.l  Output,d1
  164.         move.l  #CloseText,d2
  165.         moveq   #8,d3
  166.         add.l   sp,d3
  167.         CALLDOS VFPrintf
  168.         move.l  #100,d1
  169.         CALL    Delay
  170.         movem.l (sp)+,d2/d3/a0  ;Register zurück
  171.         rts
  172. ;---------------------------------------------------------------------------
  173.  
  174. WBenchMsg:      dc.l    0
  175.  
  176. NEWSCR: MACRO   ;linker, oberer Rand, Breite, Höhe, Tiefe, ViewModes, Titel
  177.         dc.w    \1,\2,\3,\4,\5
  178.         dc.b    0,1
  179.         dc.w    \6,CUSTOMSCREEN
  180.         dc.l    0,\7,0,0
  181.         ENDM
  182.  
  183. ns1:    NEWSCR  0,0,300,50,2,V_LACE,st1
  184. ns2:    NEWSCR  150,20,300,30,1,V_HIRES,st2
  185. ns3:    NEWSCR  20,40,150,20,6,V_HAM,st3
  186. ns4:    NEWSCR  0,100,300,20,2,0,st4
  187. ns5:    NEWSCR  10,70,50,20,1,0,st5
  188.  
  189. t5:     dc.l    SA_Left,15,SA_Top,55,TAG_END
  190. t6:     dc.l    SA_Left,320,SA_Top,65,SA_Title,st6
  191.         dc.l    SA_Width,320,SA_Height,100,TAG_END
  192. t7:     dc.l    SA_Top,120,SA_Left,200,SA_Width,700,SA_Height,10
  193.         dc.l    SA_Title,st7,SA_AutoScroll,1,SA_Depth,1,TAG_END
  194.  
  195. TrName: TRACKERNAME
  196.  
  197. OpenTagsText: dc.b "Screen ",34,"%s",34," opened with tags, Screen-structure at $%06lx",10,0
  198. OpenText: dc.b "Screen ",34,"%s",34," opened, Screen-structure at $%06lx",10,0
  199. CloseText: dc.b  "Screen at $%06lx closed",10,0
  200. WdName: dc.b    "CON:////Screen-Test für tracker.library",0
  201. GoodBye: dc.b   10,"Bye - closing soon !"
  202. GoodByeLen: equ *-GoodBye
  203. st1:    dc.b    "Screen #1",0
  204. st2:    dc.b    "Screen #2",0
  205. st3:    dc.b    "Screen #3",0
  206. st4:    dc.b    "Screen #4",0
  207. st5:    dc.b    "Screen #5",0
  208. st6:    dc.b    "Screen #6",0
  209. st7:    dc.b    "Screen #7",0
  210.  
  211.         END
  212.